<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>函数</title>
</head>
<body>
    <script>
        "use strict";
        /*
            函数对任何语言而言都是一个核心的概念，通过函数可以封装任意多条语句，而且可以在任何地方，任何时候调用执行。ECMAScript中的函数
            使用function关键字来声明，后跟一组参数以及函数体。函数的基本语法如下所示：
                function functionName(arg0, arg1, age2 ... argN) {
                    statements;
                }
            以下是一个函数示例：
                function sayHi(name, message) {
                    console.log("Hello " + name + ", " + message);
                }

            这个函数可以通过其函数名来调用，后面还要加上一对圆括号和参数（圆括号中的参数如果有多个，可以用逗号隔开）。调用sayHi()函数的代码
            如下所示：
                sayHi("Nicholas", "How old are you today?");

            ECMAScript中的函数在定义时不必指定是否返回值。实际上，任何函数在任何时候都可以通过return语句后跟要返回的值来实现返回值。
            示例：
                function sum(num1, num2) {
                    return num1 + num2;
                }
            
            这个sum()函数的作用就是把两个值加起来返回一个结果，我们注意到，除了return语句之外，没有任何声明表示该函数会返回一个值。调用这个函数的
            示例代码如下：
                var result = sum(10, 20);
                console.log(result); // 30

            这个函数会在执行完return语句之后停止并立即退出。因此，位于return语句之后的任何代码都永远不会执行。例如：
                function sum(num1, num2) {
                    return num1 + num2;
                    console.log("hello world"); // 这句到吗永远不会执行
                }

            return 语句也可以不带任何返回值。在这种情况下，函数停止执行后并返回undefined值。这种用法一般用在需要提前停止函数执行而又不需要返回值
            的情况下。

            推荐的做法是要么让函数始终都返回一个值，要么永远都不要返回值。否则，如果函数有时候返回值，有时候不返回值，会给调试代码带来不便。

            严格模式对函数有一些限制：
                * 不能把函数命名为eval或arguments
                * 不能把参数命名为eval或arguments
                * 不能出现两个命名参数重名的情况
            如果发生以上情况，就会导致语法错误，代码无法执行。

            

        */
    </script>
</body>
</html>